home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / diskutil / gemar220.lzh / GEMAR220 / PLUGIN / SOURCE / SCANINDE.M < prev    next >
Encoding:
Text File  |  1994-02-12  |  5.7 KB  |  189 lines

  1. (*-------------------------------------------------------------------------*)
  2. (*-                                                                                                                                             -*)
  3. (*-     Name                        : ScanIndex                                                                                 -*)
  4. (*-     Version                 : 1.000                                                                                         -*)
  5. (*-     Art                         : Module                                                                                        -*)
  6. (*-     Aufgabe                 : PlugIn für GEMAR                                                                    -*)
  7. (*-     Autor                     : Steffen Engel                                             (C) 93                -*)
  8. (*-     Letzte Änderung : 27.10.1993, 12:35:52                                                            -*)
  9. (*-                                                                                                                                             -*)
  10. (*-------------------------------------------------------------------------*)
  11. (*-------------------------------------------------------------------------*)
  12. (*-                                                                                                                                             -*)
  13. (*- Beschreibung    : Bearbeiten des Index eines Backups.                                     -*)
  14. (*-                                 Nach einem Backup wird dieses PlugIn gerufen, um            -*)
  15. (*-                                 die Möglichkeit zu freiem Export des Index zu haben.    -*)
  16. (*-                                 Dabei wird Das Modul für jede Datei einmal aufge-         -*)
  17. (*-                                 rufen.                                                                                                -*)
  18. (*-                                 Als Beispiel gibt dieses Modul die Liste entweder in    -*)
  19. (*-                                 eine Datei aus, oder der Index wird ausgedruckt.            -*)
  20. (*-                                                                                                                                             -*)
  21. (*-------------------------------------------------------------------------*)
  22. (*-------------------------------------------------------------------------*)
  23. (*-                                                                                                                                             -*)
  24. (*-     History                                                                                                                         -*)
  25. (*-                                                                                                                                             -*)
  26. (*-                                                                                                                                             -*)
  27. (*-     Vers | Datum        | Beschreibung                                                                            -*)
  28. (*-  ------|----------|---------------------------------------                        -*)
  29. (*-     1.0  | 26.10.93 | erstellt                                                                                    -*)
  30. (*-              |                    |                                                                                                     -*)
  31. (*-                                                                                                                                             -*)
  32. (*-                                                                                                                                             -*)
  33. (*-                                                                                                                                             -*)
  34. (*-------------------------------------------------------------------------*)
  35. MODULE ScanIndex;
  36.  
  37. IMPORT SYSTEM, TOS, CPX;
  38.  
  39. IMPORT GEMDOS, Str, POSIX2;
  40.  
  41. (* GEM-Kram *)
  42. IMPORT AES, form, fsel, rsc, objc;
  43.  
  44. IMPORT ScanRsc;
  45.  
  46. (* Magic-Lib *)
  47. FROM MagicSys     IMPORT
  48.                                 (* Const *) Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5,
  49.                                                         Bit6, Bit7, Bit8, Bit9, Bit10, Bit11, Bit12,
  50.                                                         Bit13, Bit14, Bit15,
  51.                                 (* Type  *) LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
  52.                                                         sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET;
  53.  
  54. IMPORT PlugParms;
  55.  
  56. CONST MaxPathLen = 513;                                  (* maximale Länge eines Pfades             *)
  57.             MaxNameLen = 128;                                  (* maximale Länge eines Dateinamens    *)
  58.  
  59. TYPE
  60.             Date                    = RECORD
  61.                                                 day  : SHORTCARD; (* [1..31]*)
  62.                                                 month: SHORTCARD; (* [1..12]*)
  63.                                                 year : SHORTINT;
  64.                                             END;
  65.  
  66.             Time                    = RECORD
  67.                                                 second: SHORTCARD; (*[0..59]*)
  68.                                                 minute: SHORTCARD; (*[0..59]*)
  69.                                                 hour    : SHORTCARD; (*[0..23]*)
  70.                                              END;
  71.  
  72.             FileAttr         = (readOnlyAttr,                     (* Datei nicht beschreibbar *)
  73.                                             hiddenAttr,                         (* Eintrag unsichtbar *)
  74.                                             systemAttr,                         (* (Unsichtbare) Systemdatei *)
  75.                                             volLabelAttr,                     (* Diskname *)
  76.                                             subdirAttr,                         (* Subdirectory *)
  77.                                             archiveAttr);                     (* Archivierte Datei *)
  78.  
  79.             FileAttrSet  = SET OF FileAttr;
  80.  
  81.  
  82.  
  83.             tPathStr            = ARRAY[0..MaxPathLen] OF CHAR;
  84.             tNameStr            = ARRAY[0..MaxNameLen] OF CHAR;
  85.  
  86.             (* Daten eines Directory-Eintrages *)
  87.             tDirEntry         = RECORD
  88.                                                 attr: FileAttrSet;
  89.                                                 time: Time;
  90.                                                 date: Date;
  91.                                                 size: LONGCARD;
  92.                                             END;
  93.  
  94.             tListEntry         = RECORD
  95.                                                 pName             : POINTER TO tNameStr;
  96.                                                 Entry             : tDirEntry;
  97.                                             END;
  98.  
  99.             tFileEntry         = RECORD
  100.                                                  Path              : tPathStr;
  101.                                                  pFile             : POINTER TO tListEntry;
  102.                                              END;
  103.  
  104.             tpFileEntry      = POINTER TO tFileEntry;
  105.  
  106.  
  107. VAR PrintIt      : BOOLEAN;
  108.         SearchFile : tPathStr;
  109.         PlugEnv      : PlugParms.tpPlugEnvironment;
  110.         Dial             : objc.tpTree;
  111.  
  112.  
  113.  
  114. (*$E-*)(*$D-*)(*$S-*)
  115. PROCEDURE First;
  116. BEGIN SYSTEM.CODE(1) (*$P+*)
  117. END First;
  118. (*$P-*)(*$D=*)(*$E=*)(*$S=*)
  119.  
  120.  
  121.  
  122. (*$K+ $E+ *)
  123. PROCEDURE CallPlug(File : tpFileEntry) : LONGINT;
  124.  
  125. VAR SwapStr : ARRAY[0..20] OF CHAR;
  126.  
  127.  
  128.     BEGIN
  129.  
  130.  
  131.         IF File = SYSTEM.ADDRESS(-1)
  132.  
  133.             THEN
  134.  
  135.                 (* hier sollen wir uns deinstallieren *)
  136.  
  137.             ELSIF File = NIL
  138.  
  139.             THEN
  140.  
  141.                 (* Neuer Index angefangen, für Scanning uninteressant *)
  142.  
  143.             ELSE
  144.  
  145.                 IF POSIX2.fnmatch(File^.pFile^.pName^, SearchFile, POSIX2.FNMFlags{}) = 0
  146.  
  147.                     THEN
  148.  
  149.                          Dial := ScanRsc.Trees^[ScanRsc.cAskmatch];
  150.  
  151.                          Dial^[ScanRsc.cMatchname].tedinfo^.ptext := SYSTEM.ADDRESS(File^.pFile^.pName);
  152.  
  153.                          Dial^[ScanRsc.cMatchpath].tedinfo^.ptext := SYSTEM.ADR(File^.Path);
  154.  
  155.         
  156.  
  157.                          form.center(Dial, rect);
  158.  
  159.                          form.dial(form.Start, rect, rect);
  160.  
  161.                          objc.draw(Dial, 0, 999, rect);
  162.  
  163.                          ret := form.do(Dial, -1);
  164.  
  165.                          form.dial(form.Finish, rect, rect);
  166.  
  167.                          EXCL(sBITSET(ret), Bit15);
  168.  
  169.  
  170.                          EXCL(Dial^[ret].state, objc.Selected);
  171.  
  172.  
  173.                          IF ret = ScanRsc.cMatchok
  174.  
  175.                              THEN
  176.  
  177.                                  RETURN 1;
  178.  
  179.                              END;
  180.  
  181.                     END;
  182.  
  183.             END;
  184.  
  185.         RETURN 0;
  186.  
  187.     END CallPlug;
  188. (*$K= $E+ *)
  189.  
  190.  
  191. VAR rect : AES.tRect;
  192.         ret  : sINTEGER;
  193.  
  194. BEGIN
  195.  
  196.  
  197.     PlugEnv := PlugParms.tpPlugEnvironment(CPX.pXCPB);
  198.  
  199.  
  200.     CASE PlugEnv^.Alert(1, '[2][SCANINDEX:|Datei suchen?][Ja|:Nein]') OF
  201.  
  202.          1 :
  203.  
  204.                  rsc.relocate(SYSTEM.ADDRESS(First), ScanRsc.Data, ScanRsc.Trees);
  205.  
  206.                  Dial := ScanRsc.Trees^[ScanRsc.cAskname];
  207.  
  208.                  Dial^[ScanRsc.cName].tedinfo^.ptext := SYSTEM.ADR(SearchFile);
  209.  
  210.  
  211.                  form.center(Dial, rect);
  212.  
  213.                  form.dial(form.Start, rect, rect);
  214.  
  215.                  objc.draw(Dial, 0, 999, rect);
  216.  
  217.                  ret := form.do(Dial, ScanRsc.cName);
  218.  
  219.                  form.dial(form.Finish, rect, rect);
  220.  
  221.                  IF ret = ScanRsc.cAskok
  222.  
  223.                      THEN
  224.  
  225.                          CPX.Return(SYSTEM.ADDRESS(CallPlug));
  226.  
  227.                      ELSE
  228.  
  229.                          CPX.Return(NIL);
  230.  
  231.                      END;
  232.  
  233.  
  234.         |2 : CPX.Return(NIL);
  235.  
  236.     END;
  237. END ScanIndex.
  238.         
  239.     
  240.